home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Softdisk Magazette Volume 2, No. 03 (1982-11)(Softdisk)(Side B).zip / Softdisk Magazette Volume 2, No. 03 (1982-11)(Softdisk)(Side B).do / SIMPSON.bas < prev    next >
BASIC Source File  |  1996-12-24  |  4KB  |  95 lines

  1. 10  REM  SIMPSON'S RULE NUMERICAL INTEGRATION
  2. 15  REM  BY DAN TOBIAS  SEPT 82
  3. 30 D$ =  CHR$(4)
  4. 35  ONERR  GOTO 500
  5. 40 F$ = ""
  6. 50  REM  DEF FNA
  7. 60  POKE 216,0
  8. 70  IF F$ = ""  THEN 1000
  9. 100  REM 
  10. 190  PRINT 
  11. 200  INPUT "LOWER LIMIT OF INTEGRATION: ";A
  12. 210  INPUT "UPPER LIMIT OF INTEGRATION: ";B
  13. 220  INPUT "# OF DIVISIONS TO USE: ";N
  14. 230  IF N/2 < > INT(N/2)  THEN  PRINT "MUST BE AN EVEN NUMBER.": GOTO 220
  15. 235  ONERR  GOTO 500
  16. 240 H = (B -A)/N
  17. 250 Y =  FN A(A)
  18. 260 K = 4
  19. 270  FOR C = A +H TO (B -H -H/10)  STEP H
  20. 280 Y = Y +K * FN A(C)
  21. 290 K = K -2: IF K = 0  THEN K = 4
  22. 300  NEXT 
  23. 310 Y = Y + FN A(B)
  24. 320 R = Y *(H/3)
  25. 330  PRINT : PRINT "THE RESULT OF INTEGRATING THE FUNCTION": PRINT " F(X) = ";F$: PRINT "FROM "A" TO "B" IS:"
  26. 335  PRINT " ";R
  27. 340  PRINT 
  28. 350  INPUT "TRY SAME FUNCTION WITH DIFFERENT        PARAMETERS? (Y/N) ?";I$
  29. 360  IF  LEFT$(I$,1) = "Y"  THEN  RUN 
  30. 370  PRINT : INPUT "TRY A DIFFERENT FUNCTION? (Y/N) ?";I$
  31. 380  IF  LEFT$(I$,1) = "Y"  THEN 1070
  32. 390  PRINT : PRINT "BYE.": END 
  33. 500  REM  ONERR
  34. 507  PRINT 
  35. 510 I =  PEEK(222)
  36. 512  POKE 216,0
  37. 515  IF I = 107  OR I = 163  OR I = 176  OR I = 191  OR I = 224  THEN I = 16
  38. 520  IF I = 16  THEN  PRINT "THE FUNCTION:": PRINT " F(X) = ";F$: PRINT "CONTAINS A SYNTAX ERROR.": PRINT : GOTO 370
  39. 530  IF I = 53  OR I = 133  THEN  PRINT "THE FUNCTION IS NOT CONTINUOUS OVER THE RANGE SPECIFIED.": PRINT : GOTO 350
  40. 540  IF I = 69  OR I = 77  THEN  PRINT "SORRY.  THIS PROBLEM CAUSES AN OVERFLOW OF THE SYSTEM.": PRINT : GOTO 350
  41. 550  IF I = 255  THEN  STOP 
  42. 560  PRINT "UNFORSEEN ERROR (CODE #"I": SEE": PRINT "PAGE 136 OF APPLESOFT REFERENCE MANUAL)": PRINT "THERE MAY BE A BUG IN THE PROGRAM.  EVENI'M NOT PERFECT.": PRINT : GOTO 350
  43. 1000  REM 
  44. 1010  HOME : PRINT 
  45. 1015  HTAB 3
  46. 1020  PRINT "SIMPSON'S RULE NUMERICAL INTEGRATION"
  47. 1030  PRINT : PRINT "  BY DANIEL TOBIAS         SEPT. 1982"
  48. 1040  PRINT 
  49. 1050  INPUT "  INSTRUCTIONS (Y/N)? ";I$
  50. 1060  IF  LEFT$(I$,1) = "Y"  THEN  GOSUB 5000
  51. 1070  HOME : PRINT 
  52. 1080  PRINT "ENTER THE FUNCTION USING NORMAL BASIC   SYMBOLS (E.G. 'X SQUARED' IS REPRESENTED";
  53. 1090  PRINT "AS X^2)."
  54. 1100  PRINT : INPUT "F(X) = ";FF$
  55. 1105  IF FF$ = ""  THEN 1100
  56. 1110  PRINT D$"OPEN EXEC.SIMP"
  57. 1120  PRINT D$"WRITE EXEC.SIMP"
  58. 1130  PRINT "40 F$="; CHR$(34);FF$; CHR$(34)
  59. 1140  PRINT "50 DEF FN A(X)=";FF$
  60. 1145  PRINT "RUN 1180"
  61. 1150  PRINT D$"CLOSE"
  62. 1160  PRINT D$"EXEC EXEC.SIMP"
  63. 1170  END 
  64. 1180  PRINT  CHR$(4)"DELETE EXEC.SIMP": RUN 
  65. 5000  REM  INSTRUCTIONS
  66. 5010  HOME 
  67. 5020  PRINT : PRINT "THIS PROGRAM ESTIMATES THE NUMERICAL"
  68. 5030  PRINT : PRINT "VALUES OF DEFINITE INTEGRALS USING": PRINT : PRINT "SIMPSON'S RULE."
  69. 5040  PRINT : PRINT "FOR THOSE OF YOU WHO HAVEN'T TAKEN"
  70. 5050  PRINT : PRINT "CALCULUS, OR HAVE FORGOTTEN, AN INTEGRAL"
  71. 5060  PRINT "REPRESENTS THE AREA UNDER THE GRAPH OF"
  72. 5070  PRINT : PRINT "A FUNCTION."
  73. 5080  PRINT : PRINT : PRINT "SIMPSON'S RULE IS A METHOD OF APPROX-"
  74. 5090  PRINT : PRINT "IMATING THE VALUE OF AN INTEGRAL."
  75. 5100  PRINT : PRINT "HIT ANY KEY TO CONITNUE. ";: GET I$
  76. 5110  HOME 
  77. 5120  PRINT "SIMPSON'S RULE INVOLVES DIVIDING UP THE"
  78. 5130  PRINT : PRINT "CURVE INTO A NUMBER OF SUBINTERVALS OF"
  79. 5140  PRINT : PRINT "EQUAL WIDTH, AND USING THE AREA UNDER"
  80. 5150  PRINT : PRINT "THE ARC OF A PARABOLA APPROXIMATING THE"
  81. 5160  PRINT : PRINT "CURVE OF THE FUNCTION.  THESE AREAS ARE"
  82. 5170  PRINT : PRINT "SUMMED TO GET THE TOTAL AREA."
  83. 5180  PRINT : PRINT : PRINT "YOU HAVE TO SPECIFY A FUNCTION USING"
  84. 5190  PRINT : PRINT "BASIC SYMBOLS, SUCH AS 'X*3' OR 'X^2+1'.": PRINT "THE FUNCTION IS PLACED INTO THE PROGRAM"
  85. 5200  PRINT : PRINT "USING AN EXEC FILE, THEREBY MAKING THIS": PRINT : PRINT "A SELF-MODIFYING PROGRAM."
  86. 5210  PRINT : PRINT "HIT ANY KEY TO CONTINUE. ";: GET I$
  87. 5220  HOME : PRINT 
  88. 5230  PRINT "YOU THEN SPECIFY THE LOWER AND UPPER": PRINT : PRINT "LIMITS OF THE INTEGRAL, AND THE NUMBER"
  89. 5240  PRINT : PRINT "OF SUBDIVISIONS TO MAKE.  THE HIGHER THE"
  90. 5250  PRINT "NUMBER OF SUBDIVISIONS, THE MORE"
  91. 5260  PRINT : PRINT "ACCURATE THE APPROXIMATION IS."
  92. 5270  PRINT : PRINT "THE NUMBER OF SUBDIVISIONS MUST BE EVEN."
  93. 5980  PRINT 
  94. 5990  PRINT "HIT ANY KEY TO START. ";: GET I$: HOME : PRINT 
  95. 5999  RETURN